WITH Valeur;
PACKAGE Note IS

   TYPE Etat IS (Libre, Simulee, Attribuee);

   TYPE Note IS PRIVATE;

   FUNCTION CreerNote RETURN Note;

PRIVATE

   TYPE Note (Selon : Etat := Libre) IS RECORD
      CASE Selon IS
      WHEN Libre => null;
      WHEN Simulee | Attribuee => Une_Valeur : Valeur.Valeur;
      END CASE;
   END RECORD;

END Note;
